package StringJoiner;

/**
 * ClassName:StringJoinerText003
 * Package:StringJoiner
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/1/16-19:38
 * @Version:v1.0
 */
public class StringJoinerText003 {
    /*
    * 原理1：字符串存储内存原理
    * ---->直接赋值会复用字符串常量池中的
    * ---->new出来的不回复用,而是开辟一个新的空间
    *
    * 原理2：==号比较的到底是什么
    * ---->基本数据类型比较数据值
    * ---->引用数据类型比较地址值
    *
    * 原理3：字符串拼接的底层原理
    * ---->如果没有变量参与,都是字符串直接相加,编译后就是拼接之后的结果,会复用串池中的字符串
    * ---->如果有变量参与,每一行拼接的代码,都会在内存中创建新的字符串,浪费内存
    *
    * 原理4：StringBuilder提高效率原理图
    * ---->所有要拼接的内容都会往StringBuilder中放,不会创建很多无用的空间,节约内存
    *
    * 原理5：StringBuilder源码分析
    * ---->默认创建一个长度为16的字节数组
    * ---->添加的内容小于16,直接存
    * ---->添加的内容大于16会扩容
    * ---->如果扩容之后还不够,以实际长度为准*/
    public static void main(String[] args) {
        StringBuilder sb=new StringBuilder();
        //容量：最多装多少个
        //长度：已经装了多少个
        System.out.println(sb.capacity());
        System.out.println(sb.length());

//        sb.append("abc");
//        System.out.println(sb.capacity());
//        System.out.println(sb.length());


//        sb.append("abcdefghijklmnopqrstuvwxyz");
//        System.out.println(sb.capacity());
//        System.out.println(sb.length());

        sb.append("abcdefghijklmnopqrstuvwxyz0123456789");
        System.out.println(sb.capacity());
        System.out.println(sb.length());
    }
}
